As computers have become more complex and powerful, the manner in which end users or operators interface with computers has grown increasingly important. Early computers relied on switches, lights, and/or punch cards that required an end user to interact essentially in the computers' native binary languages. Eventually, video displays were developed that enabled end users to interact with computers through textual information and commands. Another significant step in this evolution was the development of graphical user interfaces (GUIs), which permitted end users to interact with computers through the more intuitive operations of "pointing and clicking" on graphical display elements with a pointer controlled by a mouse or other user interface device. For example, to print a file, an end user in a text-based system might be required to enter a command such as "print &lt;filename&gt;". With a graphical user interface, a similar operation might be accomplished by merely moving a pointer with a mouse and clicking on an graphical icon showing a graphic representation of a printer.
Information is often presented to an end user in a graphical user interface component known as a window. A window may include any number of controls or handles that an end user can point and click on to perform different operations. For example, a title bar is often provided at the top of a window to identify the application the window is associated with. A window may also include resizing handles along its boundaries that a user can grab with the pointer to change the size of the window. A menu bar on a window may include multiple pull-down menus that a user can select to perform specific functions listed in the menus.
A window may be used to display a relatively large document with only a portion of the document shown at any given time. Scroll bars on the window may then be used to navigate through the document--that is, to scroll through the information in a document so that a different portion of the document is displayed in the window. A scroll bar itself has a number of controls. For example, an end user may control a slider (or puck) on a scroll bar by clicking and holding down a mouse button over the slider, and then moving the pointer to scroll to a specific location in the document. An end user may also click on arrow buttons found at each end of a scroll bar to scroll a document line-by-line. Also, an end user may click on regions in the scroll bar between the slider and the buttons to scroll the document page-by-page or screen-by-screen.
A principal use of windowing technology is in accessing data stored in a computer. For example, data may be organized into records or files that are linked together in a predetermined manner. Accessing such data in an efficient manner is often problematic.
Data is often stored in files that are stored within various directories organized into a hierarchical directory tree. A number of graphical user interfaces represent directories using folder icons that an end user can click on to view the files and/or sub-directories contained within a given directory.
A directory tree typically can be used to reach any directory and/or file available to a computer. When the directories and files are all stored locally (e.g., on a hard or floppy disk drive), a directory tree may be an efficient manner of accessing data. However, data may also be stored outside of a computer, e.g., on a private network such as a local area network (LAN) or wide area network (WAN), and/or on a public network such as the Internet. The amount of data stored on these additional sources is often too substantial for access with a conventional directory tree, as thousands of files and directories may be represented in a given tree. An end user may have to manually dig through several levels of directories to find a particular file. An end user may also be able to use a search engine to find possible directories for a file; however, several directories may nonetheless need to be viewed before the desired data is found.
Another manner of accessing data is through the use of embedded links. For example, on a segment of the Internet known as the World Wide Web, information is organized into hypertext documents having embedded hypertext links that an end user can click on to either jump to different documents, or to jump to different locations within the same document. A wide variety of information formats such as text, graphics, video, sound, and animation may be integrated into these hypertext documents. The World Wide Web has enjoyed such immense popularity that many private networks now also support hypertext documents, as do a number of existing computer operating systems and computer software applications.
A computer software application, often referred to as a browser, is typically used to navigate between and through hypertext documents. With a browser, an end user can point and click on links such as highlighted text, images or other user interface components (e.g., buttons) in documents to navigate to different documents and/or to different locations within the same document. With the vast amount of information available to an end user, however, it is quite easy to lose one's place after navigating through several links.
Unlike an end user's local files, hypertext documents often cannot be organized hierarchically into directories that descend from a common root. For example, a document may be linked to multiple documents that are completely unrelated to one another, and which may be stored on different computers that are located on the opposite side of the world from one another. Consequently, conventional directory trees are not well suited for maintaining one's place during browsing.
Many browsers maintain a history of navigated locations to enable an end user to backtrack through several links, e.g., by clicking on a "back" button. Revisiting backtracked links may be performed using a "forward" button. In addition, an end user may save favorite locations as "bookmarks", which may themselves be organized into user-specified folders. An end user often can later access bookmarked locations merely by selecting a bookmark from a menu.
Nevertheless, neither history nor bookmark information typically provides a full picture or map of the various documents and locations that an end user has traversed while browsing. For example, when an end user navigates through several links from a particular document, backtracks to the original document using a back button, and then selects another link within that original document, the previous links navigated from the original document typically can no longer be retrieved using the "forward" button of the browser. Documents retrieved previously from the Internet or another network may be stored locally in a cache to speed repeat access, but once the history information for forward links is lost, the underlying documents are often only retrievable through manual searching of the computer cache.
Also, bookmarking locations is typically a manually-performed activity, whereby an end user specifically stores and organizes favorite sites as he or she sees fit. Bookmarking is therefore time consuming and fully dependent on end users. Unless an end user takes the extra time to bookmark every visited location, a complete map or history of navigated locations often cannot be maintained.
History and bookmark information are also not well suited to navigating within particular documents. While some documents may include internal hypertext links that point to different locations within the same documents, history and bookmark information permits navigation within such documents only to the particular locations specified by the internal hypertext links. Instead, separate mechanisms such as scroll bars must be used as the principal mechanisms for navigating to particular locations within documents. Consequently, an end user is often forced to consciously click on different objects in a graphical user interface depending upon whether the end user wishes to navigate between documents or to navigate within documents. As a result, navigation with this type of user interface is slow and burdensome for many end users.
Therefore, a significant need exists for a manner of organizing and enhancing access to hypertext documents and the like. Moreover, a significant need exists for a manner of enhancing navigation between and within such documents.